<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<html>
<head>
<title>Apache Commons Codec Overview</title>
</head>
<body>
  <a href="https://commons.apache.org/codec"> <img src="org/apache/commons/codec/doc-files/logo.png" alt="Apache Commons Codec"></a>
  <p>Apache Commons Codec consists of a set of utilities and a simple framework for encoding and decoding text and binary data.</p>
  <p>
    You can find the Javadoc package list at the <a href="#all-packages-table">bottom of this page</a>.
  </p>
  <section>
    <h1><img src="org/apache/commons/codec/doc-files/leaf.svg" style="height: 1em; padding-right:0.25em" alt="leaf">Binary Encoders</h1>
    <p>Interfaces and classes used by the various implementations in the sub-packages.</p>
    <table>
      <caption>Binary Encoders</caption>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base16.html">Base16</a></td>
        <td>Provides Base16 encoding and decoding as defined by <a href="https://tools.ietf.org/html/rfc4648#section-8">RFC 4648 - 8. Base 16 Encoding</a>
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base16InputStream.html">Base16InputStream</a></td>
        <td>Provides Base16 decoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base16OutputStream.html">Base16OutputStream</a></td>
        <td>Provides Base16 encoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base32.html">Base32</a></td>
        <td>Provides Base32 encoding and decoding as defined by <a href="https://www.ietf.org/rfc/rfc4648.txt">RFC 4648</a>
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base32InputStream.html">Base32InputStream</a></td>
        <td>Provides Base32 decoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base32OutputStream.html">Base32OutputStream</a></td>
        <td>Provides Base32 encoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base64.html">Base64</a></td>
        <td>Provides Base64 encoding and decoding as defined by <a href="https://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base64InputStream.html">Base64InputStream</a></td>
        <td>Provides Base64 decoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Base64OutputStream.html">Base64OutputStream</a></td>
        <td>Provides Base64 encoding in a streaming fashion (unlimited size).</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/BinaryCodec.html">BinaryCodec</a></td>
        <td>Converts between byte arrays and strings of "0"s and "1"s.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/binary/Hex.html">Hex</a></td>
        <td>Converts hexadecimal Strings.</td>
      </tr>
    </table>
  </section>
  <section>
    <h1><img src="org/apache/commons/codec/doc-files/leaf.svg" style="height: 1em; padding-right:0.25em" alt="leaf">Digest Encoders</h1>
    <p>
      <strong>WARNING:</strong> Some of the functions in this package might not be suitable for cryptography, or are no longer cryptographically-secure.
    </p>
    <table>
      <caption>Digest Encoders</caption>
      <tr>
        <td><a href="org/apache/commons/codec/digest/Blake3.html">Blake3</a></td>
        <td>Provides a pure Java implementation of the <a href="https://github.com/BLAKE3-team/BLAKE3">Blake3 hash function</a> which can be used for
          computing <a href="https://en.wikipedia.org/wiki/Cryptographic_hash_function">cryptographic hashes</a> (message digests) which are extensible to
          arbitrary output lengths (known as an <i>extensible-output function</i> or <i>XOF</i>), computing <a
          href="https://en.wikipedia.org/wiki/Message_authentication_code">message authentication codes</a> using a 32 byte (256-bit) secret key, computing
          subkeys from a primary key using a <a href="https://en.wikipedia.org/wiki/Key_derivation_function">key derivation function</a>, and can be used as the
          basis for a <a href="https://en.wikipedia.org/wiki/Cryptographically-secure_pseudorandom_number_generator"> cryptographically-secure pseudorandom
            number generator</a>. <strong>WARNING:</strong> Blake3 is <em>not</em> a password hashing algorithm! An algorithm such as <a
          href="https://github.com/P-H-C/phc-winner-argon2">Argon2</a> is more appropriate for password hashing.
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/Crypt.html">Crypt</a></td>
        <td>GNU libc crypt(3) compatible hash method.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/DigestUtils.html">DigestUtils</a></td>
        <td>Simplifies common <a href="https://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html">MessageDigest</a> tasks and provides GNU
          libc crypt(3) compatible password hashing functions.
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/HmacUtils.html">HmacUtils</a></td>
        <td>Simplifies common <a href="https://docs.oracle.com/javase/6/docs/api/javax/crypto/Mac.html">Mac</a> tasks. <strong>Note:</strong> Not all JCE
          implementations support all algorithms. If not supported, an IllegalArgumentException is thrown.
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/Md5Crypt.html">Md5Crypt</a></td>
        <td>The libc crypt() "$1$" and Apache "$apr1$" MD5-based hash algorithm.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/MurmurHash2.html">MurmurHash2</a></td>
        <td>Implementation of the MurmurHash2 32-bit and 64-bit hash functions.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/MurmurHash3.html">MurmurHash3</a></td>
        <td>Implementation of the MurmurHash3 32-bit and 128-bit hash functions.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/PureJavaCrc32.html">PureJavaCrc32</a></td>
        <td>A pure-java implementation of the CRC32 checksum that uses the same polynomial as the built-in native CRC32.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/PureJavaCrc32C.html">PureJavaCrc32C</a></td>
        <td>A pure-java implementation of the CRC32 checksum that uses the CRC32-C polynomial, the same polynomial used by iSCSI and implemented on many
          Intel chipsets supporting SSE 4.2.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/Sha2Crypt.html">Sha2Crypt</a></td>
        <td>SHA2-based Unix crypt implementation.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/UnixCrypt.html">UnixCrypt</a></td>
        <td>Unix crypt(3) algorithm implementation. This class only implements the traditional 56 bit DES based algorithm.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/digest/XXHash32.html">XXHash32</a></td>
        <td>Implementation of the xxHash32 hash algorithm.</td>
      </tr>
    </table>
  </section>
  <section>
    <h1><img src="org/apache/commons/codec/doc-files/leaf.svg" style="height: 1em; padding-right:0.25em" alt="leaf">Language Encoders</h1>
    <table>
      <caption>Language Encoders</caption>
      <tr>
        <td><a href="org/apache/commons/codec/language/Caverphone1.html">Caverphone 1.0</a></td>
        <td>Encodes a string into a Caverphone 1.0 value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/Caverphone2.html">Caverphone 2.0</a></td>
        <td>Encodes a string into a Caverphone 2.0 value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/ColognePhonetic.html">Cologne Phonetic</a></td>
        <td>Encodes a string into a Cologne Phonetic value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/DaitchMokotoffSoundex.html">Daitch-Mokotoff Soundex</a></td>
        <td>Encodes a string into a Daitch-Mokotoff Soundex value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/DoubleMetaphone.html">Double Metaphone</a></td>
        <td>Encodes a string into a double metaphone value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/Metaphone.html">Metaphone</a></td>
        <td>Encodes a string into a Metaphone value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/RefinedSoundex.html">Refined Soundex</a></td>
        <td>Encodes a string into a Refined Soundex value.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/language/Soundex.html">Soundex</a></td>
        <td>Encodes a string into a Soundex value.</td>
      </tr>
    </table>
  </section>
  <section>
    <h1><img src="org/apache/commons/codec/doc-files/leaf.svg" style="height: 1em; padding-right:0.25em" alt="leaf">Network Encoders</h1>
    <table>
      <caption>Network Encoders</caption>
      <tr>
        <td><a href="org/apache/commons/codec/net/BCodec.html">BCodec</a></td>
        <td>Identical to the Base64 encoding defined by <a href="https://www.ietf.org/rfc/rfc1521.txt">RFC 1521</a> and allows a character set to be
          specified.
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/net/PercentCodec.html">PercentCodec</a></td>
        <td>Implements the Percent-Encoding scheme, as described in HTTP 1.1 specification.</td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/net/QCodec.html">QCodec</a></td>
        <td>Similar to the Quoted-Printable content-transfer-encoding defined in <a href="https://www.ietf.org/rfc/rfc1521.txt">RFC 1521</a> and designed
          to allow text containing mostly ASCII characters to be decipherable on an ASCII terminal without decoding.
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/net/QuotedPrintableCodec.html">QuotedPrintableCodec</a></td>
        <td>Codec for the Quoted-Printable section of <a href="https://www.ietf.org/rfc/rfc1521.txt">RFC 1521</a> .
        </td>
      </tr>
      <tr>
        <td><a href="org/apache/commons/codec/net/URLCodec.html">URLCodec</a></td>
        <td>Implements the <code>www-form-urlencoded</code> encoding scheme, also misleadingly known as URL encoding.
        </td>
      </tr>
    </table>
  </section>
</body>
</html>
